package com.dcrzl.gazgmh.module.sys.controller;

import com.dcrzl.gazgmh.common.annotation.SysLog;
import com.dcrzl.gazgmh.common.entity.sys.SysRole;
import com.dcrzl.gazgmh.common.utils.PageInfo;
import com.dcrzl.gazgmh.common.utils.Result;
import com.dcrzl.gazgmh.common.utils.SysConstant;
import com.dcrzl.gazgmh.module.sys.service.SysRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

/**
 * 角色
 *
 * @author dcrzl
 * @email 1728795786@qq.com
 * @date 2022-05-09 10:49:26
 */
@RestController
@RequestMapping("/sys/role")
public class SysRoleController {
    @Autowired
    private SysRoleService sysRoleService;

    /**
     * 列表
     */
    @GetMapping("/list")
    public Result list(SysRole sysRole){
        sysRole.setStatus(SysConstant.DATA_NORMAL_STATUS);
       return sysRoleService.selectList(sysRole);
    }

    /**
    * 列表分页
    */
    @GetMapping("/page")
    public PageInfo<SysRole> page(SysRole sysRole){
        return sysRoleService.selectPage(sysRole);
    }

    /**
     * 信息
     */
    @GetMapping("/info/{id}")
    public Result info(@PathVariable Long id){
		return sysRoleService.selectURoleMenuById(id);
    }

    /**
     * 保存
     */
    @SysLog(value = "添加角色")
    @PostMapping("/save")
    public Result save(@RequestBody SysRole sysRole){
		return sysRoleService.uSave(sysRole);
    }

    /**
     * 修改
     */
    @SysLog(value = "修改角色")
    @PutMapping("/update")
    public Result update(@RequestBody SysRole sysRole){
		return sysRoleService.updateUById(sysRole);
    }

    /**
     * 删除
     */
    @SysLog(value = "删除角色")
    @DeleteMapping("/delete")
    public Result delete(@RequestBody Long[] ids){
        //删除
        List<Long> list = new ArrayList<>();
        for (Long sysRoleId : ids) {
            Result Result = sysRoleService.deleteById(sysRoleId);
            if (!Result.isSuccess()){
                list.add(sysRoleId);
            }
        }
        if (list.isEmpty()){
            return new Result().setSuccess(true);
        }else{
            return new Result().setSuccess(false).setData(list).setMsg("删除失败").setCode(SysConstant.DELETE_FAIL_CODE_RES);
        }
    }

}
